import { useState } from 'react'

const useLoading = () => {
  const [isLoading, setState] = useState<boolean>(false)

  const load = (aPromise: Promise<any>) => {
    setState(true)
    return aPromise.then(() => setState(false))
  }

  // 自定义 Hook 的返回值如果是数组类型，TS 会自动推导为 Union 类型，而我们实际需要的是数组里里每一项的具体类型，需要手动添加 const 断言 进行处理
  return [isLoading, load] as const
}

export default useLoading